(***************************************************
Ant Movie Catalog importation script
www.antp.be/software/moviecatalog/
[Infos]
Authors=LA (Andrey Lukyanov) (l_a@hotmail.ru)
Title=Kinoshara
Description=Imports russian movies info with picture from Kinoshara.com
Site=http://kinoshara.com
Language=RU
Version=1.01 (27.03.2005)
Requires=3.5.0
Comments=
License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. |
GetInfo=1
[Options]
***************************************************)
program KinoShara;
const
BaseAddress = 'http://kinoshara.com/';
var
MovieName: string;
function ParseURL(Text:String):String;
var
BeginPos : Integer;
EndPos : Integer;
Value : String;
begin
repeat
BeginPos := Pos('',Text);
If BeginPos > 0 Then
Begin
EndPos := Pos('',Text);
Value := copy(Text, BeginPos, EndPos - BeginPos);
Value := StringReplace(Value,' ',', ');
Value := StringReplace(Value,' ',', ');
HTMLRemoveTags(Value);
Delete(Text,1,EndPos);
If Length(result)>0 Then
result := result + ', ' + Value
else
result := Value;
end;
until BeginPos < 1;
end;
function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
var
i: Integer;
begin
result := -1;
if StartAt < 0 then
StartAt := 0;
for i := StartAt to List.Count-1 do
if Pos(AnsiLowerCase(Pattern), AnsiLowerCase(List.GetString(i))) <> 0 then
begin
result := i;
Break;
end;
end;
procedure AnalyzePage(Address: string);
var
ID, FilmName, Line: String;
Page: TStringList;
FilmPage: TStringList;
BeginPos, EndPos, LineBeginPos: Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
PickTreeClear; // Очистка дерева фильмов
PickTreeAdd('Поиск по слову: ' + MovieName, '');
LineBeginPos := 0;
repeat
BeginPos := FindLine('
', Page, LineBeginPos+1);
LineBeginPos := BeginPos;
if BeginPos > 0 then
begin
// Вывод фильмов в дерево
Line:= Page.GetString(BeginPos+1); // Получить строку с адресами
repeat
BeginPos := Pos('
',Line);
If BeginPos>0 Then
// поиск возможных вариантов
begin
Delete(Line,1,BeginPos); //Удаление начала
// получаем адрес
BeginPos:=Pos('',Line);
ID := copy(Line, BeginPos, EndPos - BeginPos); // Получить адрес страницы
// вытаскиваем название
BeginPos := Pos('/">',Line)+3;
EndPos := Pos('',Line);
FilmName := Copy(Line, BeginPos, EndPos - BeginPos); // Получить название для выбора
FilmName := StringReplace(FilmName,' ',' ');
FilmName := StringReplace(FilmName,'','');
FilmName := StringReplace(FilmName,'','');
PickTreeAdd(FilmName, ID);
end;
until BeginPos < 1;
end;
until LineBeginPos < 1;
If PickTreeExec(Address) Then
AnalyzeMoviePage(Address); // Проанализировать страницу с фильмом
end;
procedure AnalyzeMoviePage(Address: String);
var
Page: TStringList;
LineNr : Integer;
Line, Value, TmpStr : String;
BeginPos, EndPos : Integer;
begin
Page := TStringList.Create;
Page.Text := GetPage(Address);
//Page.SaveToFile('c:\inet\page.txt'); //!Отладка
// URL
SetField(fieldURL,Address);
//Rating
// Translated Title
TmpStr := '
Название: ';
LineNr := FindLine(TmpStr, Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := StringReplace(Line,TmpStr,'');
HTMLDecode(Line);
HTMLRemoveTags(Line);
Value := Trim(Line);
SetField(fieldTranslatedTitle,Value);
end;
// Original Title
TmpStr := '
Название в оригинале: ';
LineNr := FindLine(TmpStr, Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := StringReplace(Line,TmpStr,'');
HTMLDecode(Line);
HTMLRemoveTags(Line);
Value := Trim(Line);
if Value='' then Value := GetField(fieldTranslatedTitle);
SetField(fieldOriginalTitle, Value);
end;
// Year
TmpStr := '
Год выпуска: ';
LineNr := FindLine(TmpStr, Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := StringReplace(Line,TmpStr,'');
HTMLDecode(Line);
HTMLRemoveTags(Line);
Value := Trim(Line);
SetField(fieldYear, Value);
end;
//Category
TmpStr :='
Жанр: ';
LineNr := FindLine(TmpStr, Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := StringReplace(Line,TmpStr,'');
HTMLDecode(Line);
HTMLRemoveTags(Line);
Value := Trim(Line);
Value := StringReplace(Value,'/',', ');
SetField(fieldCategory, Value);
end;
//Country
// Director
TmpStr := '
Режиссер: ';
LineNr := FindLine(TmpStr, Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := StringReplace(Line,TmpStr,'');
HTMLDecode(Line);
HTMLRemoveTags(Line);
Value := Trim(Line);
SetField(fieldDirector, Value);
end;
// Producer
// Actors
TmpStr := '
В ролях: ';
LineNr := FindLine(TmpStr, Page, 0);
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := StringReplace(Line,TmpStr,'');
HTMLDecode(Line);
HTMLRemoveTags(Line);
Value := Trim(Line);
SetField(fieldActors, Value);
end;
// Description
TmpStr := '
О фильме: ';
LineNr := FindLine(TmpStr, Page, 0); //Начало строки описания
if LineNr > -1 then
begin
Line := Page.GetString(LineNr);
Line := StringReplace(Line,TmpStr,'');
Line := StringReplace(Line, ' ', #13#10);
Line := StringReplace(Line, ' ', #13#10);
HTMLDecode(Line);
HTMLRemoveTags(Line);
Value := Trim(Line);
SetField(fieldDescription,Value);
end;
// Picture
TmpStr := '